ETH2.0: Phase 2
Resources
Phase2 Wiki
See also
Ethereum 2.0
History
A Journey Through Phase 2 of Ethereum 2.0 Medium, 2019.5
Vitalik Phase 2 Design Spaces Video @Scailing Ethereum 2019, 2019.6
Similar Slide @ETHNewYork, 2019.5
Ethereum 2.0 Phase 2 Progress, @Medium, Nov 20, 2019, Will Villanueva
Relay Networks and Fee Markets in Eth 2.0 @HackMD, 2019.12, John Adler
Ethereum 2.0 Phase 2 Progress by Will, 2019.11
A Short History and a Way Forward for Phase 2 @ethresear.ch, Will, 2020.2
Execution Environment Design
Background
Phase One and Done: eth2 as a data availability engine, @ethresear.ch, 2019.04, cdetrio
See also: ETH2.0: Phase 1
Introduction of "execution script (environment)"
A layer-1-minimizing phase 2 state execution proposal, @ethresear.ch, 2019.05, vbuterin
Phase 2 Proposal 1 @HackMD
The basic idea: contracts as a base-layer concept exist only on the beacon chain, and ETH only exists on the beacon chain ETH can be held by either beacon chain contracts (also called “precompiles”) or by validator accounts)
However, shards continue to have their own execution and their own state.
A transaction on a shard must specify which precompile it calls, and the in-shard state transition function executes the specific beacon chain precompile code using the transaction as data, with the code execution having the ability to read and write from a region of the state of any shard reserved for that precompile and issue receipts.
Iterations
Proposed further simplifications/abstraction for phase 2, @ethresear.ch, 2019.05, vbuterin
Phase 2 Proposal 2 @HackMD
Alternate phase 2 architecture proposal @HackMD, 2019, Vitalik
There is no longer any notion of shard state; instead, a shard block only contains a blob of data, a reference to a on-beacon-chain pure function ID, and a reduction output.
The beacon chain now contains a full stateful state transition engine à la eth1.
Eth2 shard chain simplification proposal by Vitalik, 2019.10
Every shard has a state, which is a mapping ExecEnvID -> (state_hash, balance).
A shard block is split into a set of chunks, where each chunk specifies an execution environment.
The execution of a chunk takes as input the state root and the contents of the chunk (ie. a portion of the shard block data) and outputs a list of [shard, EE_id, value, msg_hash] tuples, maximum one EE_id per shard
In the shard block header, we put a “receipt root”, which contains a mapping shard -> [[EE_id, value, msg_hash]...]
Main benefit: easier fee markets
Cross-shard ETH transfers
Problem Definition
Cross-shard receipt and hibernation/waking anti-double-spending, @ethresear.ch, 2019.01, vbuterin
Implementing cross-shard transactions 2019.10, Vitalik
Solution: Replace the tree of consumed receipt IDs with the nonce of send/receive receipts by enforcing receipts to be processed sequentially
Will's comment on a "receipt bitfields" idea
Moving ETH between shards: the problem statement 2019.12, Vitalik
EE-based
A meta-execution environment for cross-shard ETH transfers 2019.12, Vitalik
An even simpler meta-execution environment for ETH 2019.12, Vitalik
A protocol for cross-shard ETH transfers: even more simpler and transparent 2020.2, cdetrio
Stateless client
Fee Market
One fee market EE to rule them all, @ethresear.ch, 2019.06, vbuterin
State Providers, Relayers - Bring Back the Mempool, @ethresear.ch, 2019.06, villanuevawill
De-risking Execution environments by adding value-holding EEs (VHEEs), @ethresear.ch, 2019.11, dankrad
State Provider
Relay Networks and Fee Markets in Eth 2.0 @Medium by John Adler, 2019.12
Remaining Questions on State Providers and Stateless Networks in Eth2, @ethresear.ch, 2019.12, villanuevawill
State Provider Models in Ethereum 2.0 @ethresear.ch, Ansgar Dietrichs, 2020.1
Static State Access
Common classes of contracts and how they would handle contract state-root-plus-witness architecture, @ethresear.ch, 2018.12, vbuterin
Automated Detection of Dynamic State Access in Solidity, @ethresear.ch, 2020.02, SamWilsn
Others
The Data Availability Problem under Stateless Ethereum @ethresear.ch, Piper, 2020.2
Stateless EEs and delayed block inclusion @ethresear.ch, 2020.2, Vitalik
Stateless Execution Environment for inclusive consensus (Related: DAG consensus) to mitigate nrryuya.icon's non-attribuable censorshp attack
Simulation
Scout
quilt/sheth: Execution environment for managing shard ether
quilt/kernel: Execution environment that executes user contracts
poemm/stateless_merkle_token
Shard node by villanuevawill · Pull Request #1 · quilt/lighthouse
quilt/simulation: A tool to simulate Ethereum 2.0 execution
quilt/ease: EE Testing Framework
adiasg/simplEE: A simple AssemblyScript Ethereum EE framework
ETH1 EE
ewasm/biturbo: Eth1 EE using Turboproofs
Stateless MPT-based token script by s1na · Pull Request #11 · ewasm/scout
#Ethereum_2.0